package com.whales.shared.service;

import java.util.List;

import anyframe.common.Page;

/**
 * Generic Service 추상화
 * 
 * <p>
 * 본 Service는 중복되는 코드를 최소화 하기 위한  추상화 클래스이며,<br>
 * 상속한 서브 클래스에서  Override해서 사용합니다.
 * </p>
 * @클래스명 : GenericService   
 * @작성자 : sw775.park
 * @작성일 : 2012. 7. 11.     
 * @설명 : 
 * @수정이력 - 수정일,수정자,수정내용  					   
 * 
 */
public abstract class GenericService<EVO, PVO> extends BaseService {
    /** Entity VO */
    Class<EVO> entityVo;
    /** Parameter VO */
    Class<PVO> paramVo;
    /** Bean으로부터 'pageSize' 정보를 추출하여 해당하는 field의 값을 셋팅*/
//    @Value("#{contextProperties['pageSize'] ?: 10}")
    int pageLimit = 10;
    /** Bean으로부터 'pageUnit' 정보를 추출하여 해당하는 field의 값을 셋팅*/
//    @Value("#{contextProperties['pageUnit'] ?: 5}")
    int pageUnit = 5;
    
    public int create(PVO vo) throws Exception{
        return 0;
    }
    
    public int create(String queryId, PVO vo) throws Exception{
        return commonDao.create(queryId, vo);
    }
    
    public int delete(PVO vo) throws Exception{
        return 0;
    }
    
    public int delete(String queryId, PVO vo) throws Exception{
        return commonDao.delete(queryId, vo);
    }
    
    public int[] delete(String queryId, List<PVO> vos) throws Exception{
    	return commonDao.delete(queryId, vos);
    }
    
    public List<EVO> getList(PVO vo) throws Exception{
        return null;
    }
    
    @SuppressWarnings("unchecked")
	public List<EVO> getList(String queryId, PVO vo) throws Exception{
        return commonDao.findList(queryId, vo);
    }
    
    public Page getPageList(PVO vo) throws Exception{
        return null;
    }
    
    public Page getPageList(String queryId, PVO vo, int pageIndex, int pageLimit) throws Exception{
        return commonDao.findPagingListByRowIndex(queryId, vo, pageIndex, pageLimit, this.pageUnit);
    }
    
    public EVO findInfo(PVO vo) throws Exception{
        return null;
    }
    
    @SuppressWarnings("unchecked")
    public EVO findInfo(String queryId, PVO vo) throws Exception{
        return (EVO) commonDao.findInfo(queryId, vo);
    }
    
    public int update(PVO vo) throws Exception{
        return 0;        
    }
    
    public int update(String queryId, PVO vo) throws Exception{
        return commonDao.update(queryId, vo);        
    }
    
    public int update(String queryId, List<PVO> vos) throws Exception{
        return commonDao.update(queryId, vos);
    }
}